/**************************************************************************************************
Filename:       nb_u8g2api.h
Editor:         Tome @ newbit / www.newbitstudio.com
Revised:        $Date: 2017/5/18 11:20:02 +0800  $
Revision:       $Revision: 00001 $

Description:    
History:        
Notes:          share on github.com/newbitstudio
support on bbs.newbitstudio.com



**************************************************************************************************/



/**************************************************************************************************
// INCLUDES
**************************************************************************************************/
#include "U8x8lib.h"
#include "u8g2.h"


#ifndef U8G2LIB_NB_H
#define U8G2LIB_NB_H


/**************************************************************************************************
// TYPEDEF
**************************************************************************************************/



/**************************************************************************************************
// CONSTANTS
**************************************************************************************************/

#define U8G2 u8g2_instance_get()

#define U8G2_FUNC(func)		func(U8G2)		
#define U8G2_FUNC_A(func,a)     func(U8G2,a)
#define U8G2_FUNC_AA(func,a,b)  func(U8G2,a,b)
#define U8G2_FUNC_AAA(func,a,b,c)  func(U8G2,a,b,c)
#define U8G2_FUNC_AAAA(func,a,b,c,d)  func(U8G2,a,b,c,d)
#define U8G2_FUNC_AAAAA(func,a,b,c,d,e)  func(U8G2,a,b,c,d,e)
#define U8G2_FUNC_AAAAAA(func,a,b,c,d,e,f)  func(U8G2,a,b,c,d,e,f)

#define U8G2_SetFontPosBaseline()       U8G2_FUNC(u8g2_SetFontPosBaseline)
#define U8G2_SetFontPosBottom()         U8G2_FUNC(u8g2_SetFontPosBottom)
#define U8G2_SetFontPosTop()            U8G2_FUNC(u8g2_SetFontPosTop)
#define U8G2_SetFontPosCenter()         U8G2_FUNC(u8g2_SetFontPosCenter)

#define U8G2_SetFont(a)			U8G2_FUNC_A(u8g2_SetFont,a)
#define U8G2_SetFontMode(a)             U8G2_FUNC_A(u8g2_SetFontMode,a)
#define U8G2_GetStrWidth(a)		U8G2_FUNC_A(u8g2_GetStrWidth,a)
#define U8G2_GetUTF8Width(a)            U8G2_FUNC_A(u8g2_GetUTF8Width,a)
#define U8G2_GetGlyphWidth(a)           U8G2_FUNC_A(u8g2_GetGlyphWidth,a)


#define U8G2_GetFontDescent()           U8G2_FUNC(u8g2_GetFontDescent)
#define U8G2_GetDisplayWidth()          U8G2_FUNC(u8g2_GetDisplayWidth)
#define U8G2_GetDisplayHeight()         U8G2_FUNC(u8g2_GetDisplayHeight)
#define U8G2_GetMaxCharHeight()         U8G2_FUNC(u8g2_GetMaxCharHeight)
#define U8G2_GetMaxCharWidth()          U8G2_FUNC(u8g2_GetMaxCharWidth)
#define U8G2_SetDrawColor(a)            U8G2_FUNC_A(u8g2_SetDrawColor, a)
#define U8G2_SetFontDirection(a)        U8G2_FUNC_A(u8g2_SetFontDirection,a)

#define U8G2_DrawPixel(a,b)             U8G2_FUNC_AA(u8g2_DrawPixel, a, b)

#define U8G2_DrawStr(a,b,c)	U8G2_FUNC_AAA(u8g2_DrawStr,a,b,c)
#define U8G2_DrawUTF8(a,b,c)	U8G2_FUNC_AAA(u8g2_DrawUTF8,a,b,c)
#define U8G2_DrawGlyph(a,b,c)	U8G2_FUNC_AAA(u8g2_DrawGlyph,a,b,c)
#define U8G2_DrawHLine(a,b,c)   U8G2_FUNC_AAA(u8g2_DrawHLine,a,b,c)
#define U8G2_DrawVLine(a,b,c)	U8G2_FUNC_AAA(u8g2_DrawVLine,a,b,c)
#define U8G2_DrawLine(a,b,c,d)  U8G2_FUNC_AAAA(u8g2_DrawLine,a,b,c,d)

#define U8G2_DrawBox(a,b,c,d) U8G2_FUNC_AAAA(u8g2_DrawBox,a,b,c,d)
#define U8G2_DrawFrame(a,b,c,d) U8G2_FUNC_AAAA(u8g2_DrawFrame,a,b,c,d)
#define U8G2_DrawRBox(a,b,c,d,e) U8G2_FUNC_AAAAA(u8g2_DrawRBox,a,b,c,d,e)
#define U8G2_DrawRFrame(a,b,c,d,e) U8G2_FUNC_AAAAA(u8g2_DrawRFrame,a,b,c,d,e)


#define U8G2_DrawCircle(a,b,c,d) U8G2_FUNC_AAAA(u8g2_DrawCircle,a,b,c,d)
#define U8G2_DrawDisc(a,b,c,d) U8G2_FUNC_AAAA(u8g2_DrawDisc,a,b,c,d)

#define U8G2_DrawEllipse(a,b,c,d,e)   U8G2_FUNC_AAAAA(u8g2_DrawEllipse,a,b,c,d,e)
#define U8G2__DrawFilledEllipse(a,b,c,d,e)              \
      U8G2_FUNC_AAAAA(u8g2_DrawFilledEllipse,a,b,c,d,e)


#define U8G2_ClearDisplay()  U8G2_FUNC(u8g2_ClearDisplay);

#define U8G2_ClearBuffer()  U8G2_FUNC(u8g2_ClearBuffer)
#define U8G2_SendBuffer()  U8G2_FUNC(u8g2_SendBuffer)


#define U8G2_DrawBitmap(a,b,c,d,e)  U8G2_FUNC_AAAAA(u8g2_DrawBitmap,a,b,c,d,e)
#define U8G2_drawXBM(a,b,c,d,e)		U8G2_FUNC_AAAAA(u8g2_DrawXBM,a,b,c,d,e)
 
#define U8G2_DrawTriangle(a,b,c,d,e,f)  U8G2_FUNC_AAAAAA(u8g2_DrawTriangle,a,b,c,d,e,f)
/**************************************************************************************************
// GLOABAL VERIABLE
**************************************************************************************************/



/**************************************************************************************************
// MICROS
**************************************************************************************************/
// #define MAX((a),(b)) (a)>(b)?(a):(b)



/**************************************************************************************************
// FUNCTIONS
**************************************************************************************************/
extern void u8g2_init(const u8g2_cb_t *rotation);

extern u8g2_t* u8g2_instance_get(void);

extern void u8g2_debug(void);

extern void osal_execute_fps(uint8 drawing, uint8 move);

#endif // U8G2LIB_NB_H

/**************************************************************************************************
Copyright 2016-2017 Newbit Studio. All rights reserved.
**************************************************************************************************/





